1
Dos Operadores Eager ao Paralelismo Baseado em Blocos
AI023Lesson 3
00:00

Transição de Modo Eager do PyTorch para Triton requer uma mudança de visão de tensores como objetos monolíticos para vê-los como coleções de blocos discretos e gerenciáveis blocos ou ladrilhos.

1. Tensores do PyTorch versus Triton

É essencial distinguir tensores do Triton de tensores do PyTorch. Um tensor do PyTorch é um objeto Python do lado host envolvendo forma, tipo de dados, dispositivo, deslocamentos e metadados de armazenamento. Em contraste, o Triton trabalha com os ponteiros de dados brutos dentro de blocos de memória específicos, permitindo otimizações de nível muito mais baixo.

2. O Engasgamento do Modo Eager

Na execução padrão em modo eager, cada operação (por exemplo, Adição seguida de ReLU) exige uma inicialização separada do kernel e uma idá e volta na memória global. Este é o principal gargalo no cálculo moderno em GPU. O Triton supera isso por meio da fusão de operações dentro de um único kernel que processa blocos de dados (por exemplo, 128, 256 ou 512 elementos) diretamente na memória integrada.

3. O Paradigma Baseado em Blocos

Em vez do pensamento de nível escalar dos threads do CUDA, o Triton utiliza SPMD (Programa Único, Múltiplos Dados) ao nível do bloco. Você escreve um único kernel, e o Triton lança múltiplas instâncias em uma grade. Cada instância usa seu program_id para calcular qual "pedaço" de memória ele possui.

Tensor do PyTorch[Envoltório de Metadados]Bloco 0 (pid 0)Bloco 1 (pid 1)Bloco 2 (pid 2)

4. Configuração do Ambiente

Para começar, instale o Triton em um ambiente limpo (usando Conda ou venv) para garantir que não haja conflitos de dependências com ferramentas CUDA existentes: pip install triton.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>